const MyPromise = require('./myPromise');
const { resolve } = require('./myPromise');

// let p1 = new MyPromise((resolve, reject) => {
//     // setTimeout(() => {//测试异步
//     //     resolve('成功')
//     // }, 2000);
//     //throw new Error('executor error');
//     // resolve('成功');
//     reject('失败')
//         // setTimeout(() => {
//         //     resolve('成功。。。。');
//         // }, 2000);
// })
function p1() {
    return new MyPromise(function(resolve, reject) {
        setTimeout(function() {
            resolve('p1');
        }, 2000);
    })
}
MyPromise.resolve(100).then(value => console.log(value))
MyPromise.resolve(p1()).then(value => console.log(value))

function p2() {
    return new MyPromise(function(resolve, reject) {
        // resolve('成功');
        reject("失败")
    })
}
// MyPromise.all(['a', 'b', p1(), p2(), 'e']).then(result => {
//     console.log(result)
// });

// p2().finally(() => {
//     console.log('finally');
//     return p1();
// }).then(value => {
//     console.log(value);
// }, reason => {
//     console.log(reason);
// })

p2().then(value => console.log(value))
    .catch(reason => console.log(reason))
    // function other() {
    //     return new MyPromise((resolve, reject) => {
    //         resolve('other')
    //     });
    // }
    // promise.then(value => {
    //     console.log(value);
    //     // return 100; //把100传递到下一个then中
    //     // return other(); //在then的回调中返回一个promise对象
    //     //return p1; //测试自调动报错
    //     //throw new Error('then error');
    //     return "aaa";
    // }, reason => {
    //     console.log(reason);
    //     return 10000;
    // })


// p1.then().then().then(value => {
//     console.log(value);
// }, reason => {
//     console.log(reason)
// });
// promise.then(value => {
//     console.log(value)
// }, reason => {
//     console.log(reason);
// })
// promise.then(value => {
//     console.log(value)
// }, reason => {
//     console.log(reason);
// })
// promise.then(value => {
//     console.log(value)
// }, reason => {
//     console.log(reason);
// })